/*
    解决ios微信端软键盘收起留白问题
    created by yaohuan
* */

    // 判断设备类型
    var judgeDeviceType = function() {
        var ua = window.navigator.userAgent.toLocaleLowerCase();
        var isIOS = /iphone|ipad|ipod/.test(ua);
        var isAndroid = /android/.test(ua);

        return {
            isIOS: isIOS,
            isAndroid: isAndroid
        }
    }();

    // 监听输入框的软键盘弹起和收起事件
    function listenKeybord($input) {
        if(judgeDeviceType.isIOS) {
            // IOS 键盘弹起：IOS 和 Android 输入框获取焦点键盘弹起
            $input.addEventListener('focus',function () {
                //alert('IOS 键盘弹起啦')
                // IOS 键盘弹起后操作

                //当前焦点滚动到可视区域----ios下默认滚动到可视区域
                //activeElementScrollIntoView($input,1000);
            },false)

            // IOS 键盘收起：IOS 点击输入框以外区域或点击收起按钮，输入框都会失去焦点，键盘会收起
            $input.addEventListener('blur',function () {
                //alert('IOS 键盘收起啦')
                // IOS 键盘收起后操作
                //获取最高层级body

                var parentBody = window.parent.document;
                parentBody.activeElement.scrollIntoView();
                parentBody.scrollTop = 0;

                // 微信浏览器版本6.7.4+IOS12会出现键盘收起后，视图被顶上去了没有下来
                var wechatInfo = window.navigator.userAgent.match(/MicroMessenger\/([\d\.]+)/i);
                if(!wechatInfo) return;

                var wechatVersion = wechatInfo[1];
                var version = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);

                if(+wechatVersion.replace(/\./g, '') >= 674 && +version[1] >= 12) {
                    window.scrollTo(0,Math.max(parentBody.body.clientHeight,parentBody.documentElement.clientHeight))
                    //有些手机会有延迟，再做一次
                    setTimeout(function () {
                        window.scrollTo(0,Math.max(parentBody.body.clientHeight,parentBody.documentElement.clientHeight))
                    },500)
                }

            })
        }

        // Andriod 键盘收起：Andriod 键盘弹起或收起页面高度会发生变化，以此为依据获知键盘收起
        if(judgeDeviceType.isAndroid) {

        }
    }

    var $inputs = $("input,textarea,select");
    //console.log($inputs,'$inputs')
    for(var i=0;i < $inputs.length; i++) {
        listenKeybord($inputs[i]);
    }

    // 获取到焦点元素滚动到可视区
    function activeElementScrollIntoView(activeElement,delay) {
        var editable = activeElement.getAttribute('contenteditable');
        // 输入框、textarea或富文本获取焦点后没有将该元素滚动到可视区
        if(activeElement.tagName =='INPUT' || activeElement.tagName == 'TEXTAREA' || editable === '' || editable) {
            setTimeout(function () {
                activeElement.scrollIntoView();
            },delay)
        }
    }

//这里监听键盘收起，然后滚动顶部
document.body.addEventListener('focusout', function () {
    //软键盘收起的事件处理
    //alert('focusout')
    var ua = navigator.userAgent.toLowerCase();
    if (ua.indexOf('iphone') > 0 || ua.indexOf('ipad') > 0) {
        //键盘收齐页面空白问题
        //document.body.scrollTop = document.body.scrollHeight;
        var parentBody = window.parent.document;
        parentBody.activeElement.scrollIntoView();
        parentBody.scrollTop = 0;
        //alert('执行focusout啦')
    }
})